package com.example.shishen.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.example.wzz.common.annotation.PercentageFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 式神基础信息表
 * @author Trae AI
 */
@Data
@TableName("yys_shishenInfo")
public class ShishenInfo {

    /**
     * 式神id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 式神名称
     */
    private String name;

    /**
     * 式神性别
     */
    private String sex;

    /**
     * 式神稀有度
     */
    private String rarity;

    /**
     * 式神类型;输出/防御/辅助
     */
    private String shishenType;

    /**
     * 图片URL
     */
    private String imageUrl;

    /**
     * 简介
     */
    private String description;

    /**
     * 攻击
     */
    private Integer attack;

    /**
     * 基础生命
     */
    private Integer basicLife;

    /**
     * 防御力
     */
    private Integer defense;

    /**
     * 速度
     */
    private BigDecimal speed;

    /**
     * 暴击率
     */
    @PercentageFormat
    private BigDecimal criticalHit;

    /**
     * 暴击伤害
     */
    @PercentageFormat
    private BigDecimal criticalDamage;

    /**
     * 效果命中
     */
    @PercentageFormat
    private BigDecimal effectHit;

    /**
     * 效果抵抗
     */
    @PercentageFormat
    private BigDecimal effectResistance;
    
    /**
     * 获取格式化后的暴击率（百分比）
     */
    public String getCriticalHitPercentage() {
        return formatAsPercentage(criticalHit);
    }
    
    /**
     * 获取格式化后的暴击伤害（百分比）
     */
    public String getCriticalDamagePercentage() {
        return formatAsPercentage(criticalDamage);
    }
    
    /**
     * 获取格式化后的效果命中（百分比）
     */
    public String getEffectHitPercentage() {
        return formatAsPercentage(effectHit);
    }
    
    /**
     * 获取格式化后的效果抵抗（百分比）
     */
    public String getEffectResistancePercentage() {
        return formatAsPercentage(effectResistance);
    }
    
    /**
     * 将数值转换为百分比格式的字符串
     */
    private String formatAsPercentage(BigDecimal value) {
        if (value == null) {
            return "0.0%";
        }
        
        // 乘以100得到百分比
        BigDecimal percentageValue = value.multiply(new BigDecimal(100));
        // 保留1位小数，四舍五入
        percentageValue = percentageValue.setScale(1, RoundingMode.HALF_UP);
        
        return percentageValue.toString() + "%";
    }

    /**
     * 技能id;关联技能表
     */
    private Integer competenceId;
}